/* 
输入一个递增排序的数组和一个数字s，在数组中查找两个数，使得它们的和正好是s。如果有多对数字的和等于s，则输出任意一对即可。

输入：nums = [2,7,11,15], target = 9
输出：[2,7] 或者 [7,2]


思路1：双指针指向数组头尾，两项和与目标值比较，如果小于目标值，左指针右移，如果大于目标值，右指针左移，等于则输出此时指向的两值
思路2：哈希结构处理（在非排序时可使用）  遍历数组，看target与此项的差是否存在于hash中，如果不存在就存储进hash，如果存在就找到
*/
/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number[]}
 */
 var twoSum = function(nums, target) {
    // 思路1
    const len =nums.length
    let left=0,right=len-1
    while(left<right){
        if(nums[left]+nums[right]<target){
            left++
        }else if(nums[left]+nums[right]>target){
            right--
        }else{
            return [nums[left],nums[right]]
        }
    }

    // 思路2
    /* const len =nums.length
    let set=new Set()
    for (const val of nums) {
        if(set.has(target-val)){
            return [target-val,val]
        }else{
            set.add(val)
        }
    } */

};

let nums = [2,7,11,15], target = 9

let res = twoSum(nums,target)
console.log(res);